package View; import java.awt.Color; import java.awt.Font; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.BorderFactory; import javax.swing.JButton; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JTextField; import Control.DisplayControl; import Control.TaskScheduler; import Helper.TimeConverter; public class CommandPanel extends JPanel { private static final long serialVersionUID = 8057384542280274589L; private JTextField nrQueuesField = new JTextField(5); private JTextField minServiceField = new JTextField(5); private JTextField maxServiceField = new JTextField(5); private JTextField minArrivalField = new JTextField(5); private JTextField maxArrivalField = new JTextField(5); private JTextField startTimeField = new JTextField(5); private JTextField finishTimeField = new JTextField(5); private JTextField sleepingTime = new JTextField(5); private JLabel nrQueuesLabel = new JLabel("Number of queues "); private JLabel minServiceLabel = new JLabel("Minimum service time (sec) "); private JLabel maxServiceLabel = new JLabel("Maximum service time (sec) "); private JLabel minArrivalLabel = new JLabel("Minimum arrival time (sec) "); private JLabel maxArrivalLabel = new JLabel("Maximum arrival time (sec) "); private JLabel startTimeLabel = new JLabel("Start at "); private JLabel finishTimeLabel = new JLabel("Finish at "); private JLabel currentTimeLabel = new JLabel("Current time"); private JLabel changingTimeLabel = new JLabel("--:--:--"); private JLabel sleepingTimeLabel = new JLabel("Sleeping Time"); private JButton startButton = new JButton("START"); private JLabel[] taskLabels; private JLabel[] serverLabels; public CommandPanel(JLabel[] tasks, JLabel[] servers) { taskLabels = tasks; serverLabels = servers; setLayout(new GridBagLayout()); setBorder(BorderFactory.createRaisedBevelBorder()); setBackground(Color.decode("0xc1ffc1")); GridBagConstraints gbc = new GridBagConstraints(); gbc.weightx = 1.0; gbc.weighty = 1.0; gbc.gridx = 0; gbc.gridy = 0; add(nrQueuesLabel, gbc); gbc.gridx = 0; gbc.gridy = 1; add(nrQueuesField, gbc); gbc.gridx = 7; gbc.gridy = 0; add(currentTimeLabel, gbc); gbc.gridx = 7; gbc.gridy = 1; changingTimeLabel.setFont(new Font(null, Font.BOLD, 16)); changingTimeLabel.setForeground(Color.red); add(changingTimeLabel, gbc); gbc.gridx = 8; gbc.gridy = 0; add(sleepingTimeLabel, gbc); gbc.gridx = 8; gbc.gridy = 1; add(sleepingTime, gbc); gbc.gridx = 9; gbc.gridy = 0; add(startButton, gbc); gbc.anchor = GridBagConstraints.LINE_END; gbc.gridx = 1; gbc.gridy = 0; add(minServiceLabel, gbc); gbc.gridx = 3; gbc.gridy = 0; add(minArrivalLabel, gbc); gbc.gridx = 5; gbc.gridy = 0; add(startTimeLabel, gbc); gbc.gridx = 1; gbc.gridy = 1; add(maxServiceLabel, gbc); gbc.gridx = 5; gbc.gridy = 1; add(finishTimeLabel, gbc); gbc.gridx = 3; gbc.gridy = 1; add(maxArrivalLabel, gbc); gbc.anchor = GridBagConstraints.LINE_START; gbc.gridx = 2; gbc.gridy = 0; add(minServiceField, gbc); gbc.gridx = 4; gbc.gridy = 0; add(minArrivalField, gbc); gbc.gridx = 6; gbc.gridy = 0; add(startTimeField, gbc); gbc.gridx = 2; gbc.gridy = 1; add(maxServiceField, gbc); gbc.gridx = 4; gbc.gridy = 1; add(maxArrivalField, gbc); gbc.gridx = 6; gbc.gridy = 1; add(finishTimeField, gbc); startButton.addActionListener(new StartAction()); } public class StartAction implements ActionListener { @Override public void actionPerformed(ActionEvent event) { DisplayControl displayControl = new DisplayControl(taskLabels, serverLabels); Thread schedulerThread = new Thread(new TaskScheduler(startTimeField.getText(), finishTimeField.getText(), maxArrivalField.getText(), minArrivalField.getText(), maxServiceField.getText(), minServiceField.getText(), nrQueuesField.getText(), displayControl, sleepingTime.getText())); schedulerThread.start(); Thread timeThread = new Thread( new TimeConverter(startTimeField.getText(), finishTimeField.getText(), changingTimeLabel, sleepingTime.getText())); timeThread.start(); JButton but = (JButton) event.getSource(); but.setEnabled(false); } } }